#include <stdio.h>
#include <string.h>
#include <stdbool.h>

typedef struct number
{
    int sun[10000];
    int len;
    int flag;
}num;


void init(num *a)
{
    memset(a->sun,0,sizeof(a->sun));
    a->len=0;
    a->flag=1;
}

num build(const char *str)
{
    num a;
    init(&a);
    int len=strlen(str);
    a.len=len;
    for(int i=0;i<len;i++)
    {
        if(str[len-1-i]=='-')
        {
            a.flag=-1;
            a.len--;
            break;
        }
        else
        {
            a.sun[i]=str[len-1-i]-'0';
        }

    }
    return a;
}


int cmp(num *a,num *b)
{
    if(a->len>b->len)return 1;
    else if(a->len<b->len)return -1;
    else
    {
        for(int i=a->len-1;i>-1;i--)
        {
            if(a->sun[i]>b->sun[i])return 1;
            else if(a->sun[i]<b->sun[i])return -1;
        }
    }
    return 0;
}

void move_left(num *a)
{
    int len=a->len;
    for(int i=len-1;i>=0;i--)
    {
        a->sun[i+1]=a->sun[i];
    }

    a->sun[0]=0;
    a->len=len+1;
}

num sub(num *a,num *b)
{
    num res;
    init(&res);
    int len=a->len;
    res.len=len;
    for(int i=0;i<len;i++)
    {
        if(a->sun[i]<b->sun[i])
        {
            a->sun[i+1]--;
            a->sun[i]+=10;
        }
        res.sun[i]=a->sun[i]-b->sun[i];
    }
    for(int i=len-1;i>-1;i--)
    {
        if(res.sun[i]==0)
        {
            len--;
        }
        else
        {
            break;
        }
    }
    res.len=len;
    return res;
}


num div(num *a,num *b,num *r)
{
    num res;
    init(&res);
    if(!((a->flag==-1&&b->flag==-1)||(a->flag==1&&b->flag==1)))
    {
        res.flag=-1;
    }
    int len=a->len;
    res.len=len;
    for(int i=a->len-1,j=0;i>-1;i--,j++) {
        move_left(r);
        r->sun[0]=a->sun[i];
        while(cmp(r,b)>=0)
        {
            *r=sub(r,b);
            res.sun[i]++;
        }
    }
    for(int i=len-1;i>-1;i--)
    {
        if(res.sun[i]==0)
        {
            len--;
        }
        else
        {
            break;
        }
    }
    if(res.flag==-1)
    {
        *r=sub(b,r);
    }
    res.len=len;
    return res;
}





void print(num *a,num *r,char *str1,char *str2)
{
    if(a->flag==-1)
    {
        printf("-");
        a->sun[0]++;
    }
    if(a->len==0)
    {
        printf("0");
    }
    else {
        for (int i = a->len - 1; i > -1; i--) {
            printf("%d", a->sun[i]);
        }
    }
    printf("\n");
    if(r->len==0)
    {
        printf("0");
        return;
    }
    for(int i=r->len-1;i>-1;i--)
    {
        printf("%d",r->sun[i]);
    }
}


int main(void) {
    int n=1;
    while(n--)
    {
        char str1[10000];
        char str2[10000];
        scanf("%s%s",str1,str2);
        num a,b;
        a=build(str1);
        b=build(str2);
        if(a.len==1&&a.sun[0]==0)
        {
            printf("0\n0");
            return 0;
        }
        num sum,r;
        init(&sum);
        init(&r);
        sum=div(&a,&b,&r);
        print(&sum,&r,str1,str2);
    }
    return 0;
}
